package com.sinosoft.sinopay.paytrade.biz.service;

import java.util.List;
import java.util.Map;

import com.sinosoft.sinocloud.platform.common.web.pagequery.PageGrid;
import com.sinosoft.sinocloud.platform.common.web.pagequery.PageQueryModel;
import com.sinosoft.sinopay.api.common.dto.pay.PaymentInfoDetailDTO;
import com.sinosoft.sinopay.api.common.dto.query.PayInfoQryParam;
import com.sinosoft.sinopay.paytrade.dto.*;

/**
 * 【支付交易查询服务接口类】
 * @author chenxin
 * @version V1.0
 * @date ${fdate} 下午1:39
 */
public interface PaymentTradeQryCoreService {
    /**
     * 通过查询参数查询支付详细信息集合
     * @param queryParam 查询参数信息
     * @return  支付详细信息集合
     */
    public List<PaymentInfoDetailDTO> queryPaymentDetailListByParam(PayInfoQryParam queryParam);

    /**
     * 方法的功能描述：根据订单号查询订单信息
     * @param payNo
     * @return PaymentRequestDTO
     * @throw
     * @author bianzb
     * @version V1.0
     * @date 2016-12-15
     */
    public PaymentInfoDetailDTO queryPaymentOrderByPayNo(String payNo);

    /**  
	* 查询所有交易订单Sid
	* @param reqBatchNo 批次号
	*/
	List<Map<String, Object>> queryTranseOrderSidList(String reqBatchNo);
	
	/**  
	*  查询 支付交易回调信息列表
	* @param cPayTradeNotifyRecord 查询参数：商户编码、支付号码、回调地址、回调类型、回调次数、回调限制次数、回调结果
	*/
	List<PayTradeNotifyRecordDTO> queryPayTradeNotifyRecord(PayTradeNotifyRecordDTO cPayTradeNotifyRecord);
	

	/**  
	*  查询当日所有支付交易信息表数据
	* @param  thirdpayCode 渠道编码
	* return List<PaymentInfoDetailDTO>
	*/
	List<PaymentInfoDetailDTO> queryAllPayTransInfoForDay(String thirdpayCode);
	
	/**  
	*  查询当日所有支付订单批次表数据
	* @param  thirdpayCode 渠道编码
	* return List<PaymentTradeReqDTO>
	*/
	List<PaymentTradeReqDTO> queryAllPayOrderBatchesOfDay(String thirdpayCode);
	
	/**  
	*  查询支付交易表信息
	* @param Sid 流水号
	* return PaymentTradeReqDTO
	*/
	PaymentTradeReqDTO queryPayTransInfoBySid(Integer Sid);
	
	/**   
	*  查询批次订单表信息
	* @param Sid 流水号
	* return PaymentTradeReqDTO
	*/
	PaymentTradeReqDTO queryBatchOrderInfoBySid(Integer Sid);
	
	/**  
	* 查询交易支付关系表信息
	* @param payBatchId 支付批次ID
	* return PaymentTradeReqDTO
	*/
	PaymentTradeReqDTO queryTransPayRelateInfoByBatchId(Integer payBatchId);
	
	/**  
	* 查询支付总表信息
	* @param payBatchNo 支付批次号
	* return PaymentTradeBatchDTO
	*/ 
	PaymentTradeBatchDTO queryPaySumInfoByBatchNo(String payBatchNo);
	
	/**  
    * 银行转码 信息
    * @param payBatchNo  订单表 银行编码吗
    * return PaymentTradeBatchDTO
    */ 
	String queryStandBankCodeByBankCode(String bankCode);
    
	/**     
    * 根据报盘银行编码查询报盘文件名称 ，条件为 报盘文件状态=1
    * @param payChannelId  报盘银行编码
    * return String  报盘文件名称
    */ 
    String queryOfferFileNameByOfferPayChannelId(Integer payChannelId);
    
    /**     
     * 根据报盘银行编码查询报盘文件名称 ，条件为报盘文件状态=1
     * @param reqBatchNo  请求批次号
     * return Integer  支付交易订单批次sid
     */ 
     Integer queryPayTradeBatchSidByBatchNo(String reqBatchNo);
     
     /**     
      * 通联交易结果查询
      * @param tAllinpayReqDTO  条件信息
      * return List<AllinpayRespDTO>  查询结果集
      */ 
     AllinpayRespDTO queryAllinpayTradeResult(AllinpayReqDTO tAllinpayReqDTO);
     
     /**     
      * 综合查询模块：分页查询交易信息
      * @param cPageQueryModel  参数信息
      * return PageGrid  分页查询结果信息
      */ 
     PageGrid queryPaymentTradePageList(PageQueryModel cPageQueryModel);

	/**
	 * 查询批量结果信息接口
	 *@return
	 */
	PaymentInfoDetailDTO queryBatchResultCode(PayTradeSearchDTO payTradeSearchDTO);
	
	List<PaymentInfoDetailDTO> queryAllPayTransInfoForBatchNo(String ReqBatchNo);
}
